package com.taritari.journal.utils;

import org.springframework.stereotype.Component;
import cn.hutool.core.util.StrUtil;
/**
 * @author taritari
 * @date 2024-01-16 15:41
 * @description 格式验证
 */
@Component
public class RegexUtil {
    /**
     * 手机号正则
     */
    public static final String PHONE_REGEX = "^(((13\\d)|(14[579])|(15([0-3]|[5-9]))|(166)|(17[0135678])|(18\\d)|(19[89]))\\d{8})$";
    /**
     * 邮箱正则
     */
    public  final String EMAIL_REGEX = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
    /**
     * 密码正则。4~32位的字母、数字、下划线
     */
    public  final String PASSWORD_REGEX = "^\\w{4,32}$";
    /**
     * 验证码正则, 6位数字或字母
     */
    public  final String VERIFY_CODE_REGEX = "^[a-zA-Z\\d]{6}$";
    /**
     * 是否是无效手机格式
     * @param phone 要校验的手机号
     * @return true:符合，false：不符合
     */
    public  boolean isPhoneInvalid(String phone){
        return mismatch(phone, PHONE_REGEX);
    }
    /**
     * 是否是无效邮箱格式
     * @param email 要校验的邮箱
     * @return true:符合，false：不符合
     */
    public  boolean isEmailInvalid(String email){
        return mismatch(email, EMAIL_REGEX);
    }

    /**
     * 是否是无效验证码格式
     * @param code 要校验的验证码
     * @return true:符合，false：不符合
     */
    public  boolean isCodeInvalid(String code){
        return mismatch(code, VERIFY_CODE_REGEX);
    }

    // 校验是否不符合正则格式
    private  boolean mismatch(String str, String regex){
        if (StrUtil.isBlank(str)) {
            return true;
        }
        return !str.matches(regex);
    }


}
